# -*- coding: utf-8 -*-
from django.db import models
from django.forms.models import ModelChoiceField
from datetime import datetime, date
from django.contrib.auth.models import User
from django.contrib import admin
from tinymce.models import HTMLField
# Create your models here.

ARTICLE_STATUS = ((1, u'Active'), (2, u'Inactive'))
REGISTER_STATUS_CHOICES = (('DA_CAP', u"Đã cấp"), ('CHUA_CAP', u"Chưa cấp"))

class Category(models.Model):
    name = models.CharField("Tên nhóm",max_length=50, unique=True, blank=False)
    show_in_menu = models.BooleanField("Xuất hiện tại menu chính", default=False)
    order = models.IntegerField("Thứ tự", max_length=10, default=0)
    icon_url = models.CharField("Đường dẫn icon", max_length=100, blank=True, default="icon1.png")
    parent = models.ForeignKey('self', null=True, blank="True", related_name='Nhóm cha')

    class Meta:
        verbose_name = "Nhóm bài viết"
        verbose_name_plural = "Nhóm bài viết"
        ordering = ['order']

    def __unicode__(self):
        if self.parent:
            return u'----' + unicode(self.name)
        else:
            return unicode(self.name)

    def get_url_id(self):
        return_ids = unicode(self.id)
        children = Category.objects.filter(parent = self)
        for child in children:
            return_ids = return_ids + u"_" + str(child.id)

        return return_ids

class CategoryAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'parent', 'order', 'show_in_menu', 'icon_url', )

class Article(models.Model):
    account_id = models.ForeignKey(User, verbose_name="Người viết", null=True)
    title = models.CharField("Tiêu đề", default = u'Không tiêu đề', max_length=100)
    post_date = models.DateTimeField("Thời gian đăng", default = datetime.now)
    written_date = models.DateTimeField("Thời gian viết", default = datetime.now)
    status = models.SmallIntegerField("Tình trạng",
        max_length=3, choices=ARTICLE_STATUS, default=1)
    content = HTMLField ("Nội dung")
    category_id = models.ForeignKey(Category, verbose_name="Nhóm", null=True, blank=True)
    last_saved = models.DateTimeField("Lưu lần cuối", auto_now=True)

    class Meta:
        verbose_name = "Bài viết"
        verbose_name_plural = "Bài viết"

    def __unicode__(self):
        return u'Bài ' + unicode(self.title)

class ArticleAdmin(admin.ModelAdmin):
    exclude = ('account_id', 'written_date')
    list_display = ('account_id', 'title', 'content', 'post_date', 'category_id', 'status', 'last_saved')
    list_display_links = ('title',)
    search_fields = ('title', 'content')

    def save_model(self, request, obj, form, change):
        obj.account_id = request.user
        obj.save()


class Register(models.Model):
    register_name = models.CharField("Họ và tên", max_length=250, blank=False)
    register_email= models.CharField("Email", max_length=250, blank=False, unique=True)
    status = models.CharField(u"Trạng thái", max_length=150, default='CHUA_CAP',
        choices=REGISTER_STATUS_CHOICES)
    register_date = models.DateField(u"Ngày đăng ký", default=date.today())
    user_name = models.CharField("Tài khoản đăng kí", max_length=100, blank=False, unique=True)

    def __unicode__(self):
        return unicode(self.register_name)

    class Meta:
        verbose_name = u"Đăng kí"
        verbose_name_plural = u"Đăng kí"

class Headline(models.Model):
    title = models.CharField("Tiêu đề", max_length=150, blank=False)
    show_date = models.DateTimeField("Thời gian hiện", default=datetime.now)
    post_date = models.DateTimeField("Thời gian đăng", auto_now = True)
    def __unicode__(self):
        return unicode(self.title)

    class Meta:
        verbose_name = u"Headline"
        verbose_name_plural = u"Headline"

admin.site.register(Article, ArticleAdmin)
admin.site.register(Category, CategoryAdmin)
admin.site.register(Register)
admin.site.register(Headline)